﻿using System;
using System.Collections.Generic;
using Sebrae.Academico.Trilhas.BM.Classes;
using Sebrae.Academico.Trilhas.Dominio.Classes;

namespace Sebrae.Academico.Trilhas.BP
{
    public class ManterNivelOcupacional : BusinessProcessBase
    {
        private BMNivelOcupacional nivelOcupacional = null;


        public ManterNivelOcupacional()
            : base()
        {
            nivelOcupacional = new BMNivelOcupacional(unitOfWork);
        }

        public void IncluirNivelOcupacional(NivelOcupacional pNivelOcupacional)
        {
            nivelOcupacional.ValidarNivelOcupacionalInformado(pNivelOcupacional);

            IList<NivelOcupacional> nivel = ObterNivelOcupacionalPorNome(pNivelOcupacional.Nome);

            if (nivel != null && nivel.Count > 0) throw new Exception("Este Nível Ocupacional Já está Cadastrado !");

            nivelOcupacional.Incluir(pNivelOcupacional);
        }

        public void AlterarNivelOcupacional(NivelOcupacional pNivelOcupacional)
        {
            nivelOcupacional.ValidarNivelOcupacionalInformado(pNivelOcupacional);
            nivelOcupacional.Alterar(pNivelOcupacional);
        }

        public IList<NivelOcupacional> ObterNivelOcupacionalPorNome(string pNome)
        {
            if (string.IsNullOrWhiteSpace(pNome)) throw new Exception("Informe o Nome");
            return nivelOcupacional.ObterPorNome(pNome);
        }

        public void ExcluirNivelOcupacional(NivelOcupacional pNivelOcupacional)
        {
            nivelOcupacional.Excluir(pNivelOcupacional);
        }

        public IList<NivelOcupacional> ObterTodosNivelOcupacional()
        {
            return nivelOcupacional.ObterTodos();
        }

        public NivelOcupacional ObterNivelOcupacionalPorID(int pId)
        {
            return nivelOcupacional.ObterPorID(pId);
        }


    }
}
